#include<string.h>
#include<stdio.h>
#include<stdlib.h>
typedef struct TNode
{
    char data;
    struct TNode* lchild;
    struct TNode* rchlid;
}*PTree,Tree;

void CreateTree(char *s,int len,PTree *T);
void PostorderTraverse(PTree T);
int main()
{
    char s[10000];
    //freopen("in.txt","r",stdin);
    int n;
    scanf("%d",&n);
    scanf("%s",s);
    int len = strlen(s);
    PTree T;
    CreateTree(s,len,&T);
    PostorderTraverse(T);
}

void PostorderTraverse(PTree T)
{
    if(T)
    {
        PostorderTraverse(T->lchild);
        PostorderTraverse(T->rchlid);
        printf("%c",T->data);
    }
}

void CreateTree(char *s,int len,PTree *T)
{
    if(len <= 0) return;
    int flag = 0;
    for(int i = 0; i < len; i++)
    {
        if(flag == 0 && s[i] == '0')
        {
            flag = 1;
        }
        else
        if(flag == 0 && s[i] == '1')
        {
            flag = 2;
        }
        else
        if(flag == 1 && s[i] == '1') flag = 3;
        else if(flag == 2 && s[i] == '0') flag = 3;
    }
    if(T)
    {
        if(flag == 1)
        {
            (*T) = (PTree)malloc(sizeof(Tree));
            (*T)->data = 'B';
            (*T)->lchild = NULL;
            (*T)->rchlid = NULL;
            CreateTree(s,len/2,&((*T)->lchild));
            CreateTree(s+len/2,len/2,&((*T)->rchlid));
        }
        if(flag == 2)
        {
            (*T) = (PTree)malloc(sizeof(Tree));
            (*T)->data = 'I';
            (*T)->lchild = NULL;
            (*T)->rchlid = NULL;
            CreateTree(s,len/2,&((*T)->lchild));
            CreateTree(s+len/2,len/2,&((*T)->rchlid));
        }
        if(flag == 3)
        {
            (*T) = (PTree)malloc(sizeof(Tree));
            (*T)->data = 'F';
            (*T)->lchild = NULL;
            (*T)->rchlid = NULL;
            CreateTree(s,len/2,&((*T)->lchild));
            CreateTree(s+len/2,len/2,&((*T)->rchlid));
        }
    }
}